#include<stdio.h>
#include"array.h"
int inc(const void*a,const void*b){
    return *(int*)a-*(int*)b;
}
int dec(const void*a,const void*b)
{
    return *(int*)b-*(int*)a;
}

int hash(int n)
{
    int s=0;
    while(n>0)s+=n%10,n/=10;
    return s;
}
int user(const void *a,const void*b)
{
    int flag= hash(*(int*)a)-hash(*(int*)b);
    if(flag!=0)
        return flag;
    return *(int*)a-*(int*)b;
}
/**模仿实现类似于qsort的自定义比较规则*/
void sort(int a[], int n,int(*compare)(const void*a,const void*b)) {
	int i, j, k, t;
	for (i = 0; i < n - 1; i++) {
		k = i;
		for (j = i + 1; j < n; j++)
			if (compare(a+j,a+k)<0)
				k = j;
		if (k != i) {
			t = a[k];
			a[k] = a[i];
			a[i] = t;
		}
		print(a, n);
	}

}
int main() {
	int a[] = { 5, 4, 1, 2, 9, 7, 8, 6, 0, 3 };
	int n = sizeof(a) / sizeof(a[0]);
	print(a, n);
	sort(a, n,inc);
	print(a, n);
    sort(a, n,dec);
	print(a, n);
    sort(a, n,user);
	print(a, n);

	return 0;

}
